//导入工具包 require('node_modules里对应模块')
var gulp = require('gulp'), //本地安装gulp所用到的地方
    less = require('gulp-less'),  //将less文件转为css文件
    htmlmin = require('gulp-htmlmin'),  //将html文件压缩(html-minifier)
    minifyhtml = require('gulp-minify-html'),  //将html文件压缩(通过 Minimize)
    cssmin = require('gulp-clean-css'),  //将css文件压缩
    jsmin = require('gulp-uglify'),  //将js文件压缩
    imagemin = require('gulp-imagemin'),  //将图片文件压缩
    smushit = require('gulp-smushit'),  //将图片文件压缩(只能压缩jpg和png，对png效果好)
    rename = require('gulp-rename'),//重命名文件
    concat = require('gulp-concat'),  //合并某些文件
    browserSync = require('browser-sync').create();

//定义一个less任务（自定义任务名称）,用于将less文件转为css文件.
gulp.task('less', function () {
    gulp.src('less/index.less') //该任务针对的文件
        .pipe(less()) //该任务调用的模块
        .pipe(gulp.dest('css')); //将会在css下生成index.css
});
//定义一个htmlmin任务（自定义任务名称）,用于将html文件转为html压缩文件.(压缩 HTML 通过 html-minifier.)
gulp.task('htmlmin', function () {
    var options = {
        removeComments: true,//清除HTML注释
        collapseWhitespace: true,//压缩HTML
        // collapseBooleanAttributes: true,//省略布尔属性的值 <input checked="true"/> ==> <input />
        removeEmptyAttributes: true,//删除所有空格作属性值 <input id="" /> ==> <input />
        removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"
        removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"
        minifyJS: true,//压缩页面JS
        minifyCSS: true//压缩页面CSS
    };
    gulp.src('GlobalCss.html')
        .pipe(htmlmin(options))
        .pipe(gulp.dest('../Linframe-min'));
});
//定义一个minifyhtml任务（自定义任务名称）,用于将html文件转为html压缩文件.(压缩 HTML 通过 html-minifier.)
gulp.task('minifyhtml', function () {
    gulp.src('*.html')
        .pipe(minifyhtml())
        .pipe(gulp.dest('../Linframe-min'));
});
//定义一个cssmin任务（自定义任务名称）,用于将css文件转为css压缩文件.
gulp.task('cssmin', function () {
    gulp.src('css/Resume.css')
        .pipe(cssmin())
        .pipe(gulp.dest('../Linframe-min/css'));
});
//定义一个jsmin任务（自定义任务名称）,用于将js文件转为js压缩文件.
gulp.task('jsmin', function () {
    gulp.src('js/lindf.js')
        .pipe(jsmin())
        // .pipe(concat('lindf.min.js'))
        .pipe(gulp.dest('../Linframe-min/js'));
});
//定义一个imagemin任务（自定义任务名称）,用于将image(图片)文件转为image(图片)压缩文件.
gulp.task('imagemin', function () {
    gulp.src('img/*.{gif,ico,svg}') //*.{png,jpg,gif,ico,svg}
        .pipe(imagemin())
        .pipe(gulp.dest('../Linframe-min/img'));
});
//定义一个smushit任务（自定义任务名称）,用于将图片(jpg,png)文件转为图片(jpg,png)压缩文件.
gulp.task('smushit', function () {
    return gulp.src('img/*.{png,jpg}')
        .pipe(smushit({
            verbose: true
        }))
        .pipe(gulp.dest('../Linframe-min/img'));
});
//定义一个rename任务（自定义任务名称）,用于将压缩的js文件重命名.
gulp.task('rename', function () {
    gulp.src('js/lindf-min.js')
        .pipe(jsmin())
        .pipe(rename('lindf.min.js'))
        .pipe(gulp.dest('img-min'));
});
//定义一个concat任务（自定义任务名称）,用于将指定的css文件(js文件)组合并为名为'min'的js文件.
gulp.task('concat', function () {
    gulp.src('js/*.js')
        .pipe(concat('lindf.min.js'))//合并后的文件名
        .pipe(gulp.dest('css'));
});
// 静态服务器
gulp.task('browserSync', function() {
    browserSync.init({
        files:['**'],
        server: {
            baseDir: "./",
            index: "测试1.html"
        }
    });
});
// 代理
// gulp.task('browser-sync', function() {
//     files:['**'],
//     browserSync.init({
//         proxy: "www.lindf.com"
//     });
// });
//定义默认任务,当命令行为gulp或者gulp default时，自动执行后面的默认任务，注意：并不是按顺序执行任务。
gulp.task('default',['cssmin', 'jsmin']);

//gulp.task(name[, deps], fn) 定义任务  name：任务名称 deps：依赖任务名称 fn：回调函数
//gulp.src(globs[, options]) 执行任务处理的文件  globs：处理的文件路径(字符串或者字符串数组)
//gulp.dest(path[, options]) 处理完后文件生成路径